/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package interfaz.graficas;
import VO.Datos;
import control.HelperValidar;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;

/**
 *
 * @author giannin
 */
public abstract class grafica extends JPanel{
        
    @Override
    protected void paintComponent(Graphics g) {
        dibujarEjes(g);
        dibujarEtiquetas(g);
        dibujarPuntos(g);
    }
    
    protected void dibujarEjes(Graphics g){
        //Dibujando Ejes
        g.setColor( Color.red );
        g.drawLine ( 15, 0, 15, this.getHeight()-13 );
        g.drawLine ( 15, this.getHeight()-15, this.getWidth()-10, this.getHeight()-15 );
    }
    
    protected void dibujarEtiquetas(Graphics g){
        int divisionesHorizontales = (this.getWidth()-15-10)/cantidadDeDatos();
        int posHorizontal = 0;

        //dibujando etiquetas en el eje y
        for(int i=0;i<=4;i++){
            int h = (int)((this.getHeight()-15)/4*i);
            g.setColor( Color.red );
            g.drawLine (11,h+1,15,h+1);
            g.setColor( Color.blue );
            if(i!=4){
                int numero = (int)(maximo()/4*(i+1));
                g.drawString(""+numero, 0, this.getHeight()-75-h );
            }
        }
        
        //dibujando etiquetas en el eje x
        for(int i=0;i<=cantidadDeDatos();i++){
            //dibujando marcas
            g.setColor( Color.red );
            g.drawLine ( posHorizontal+15, this.getHeight()-15, posHorizontal+15,this.getHeight()-13);
            //dibujando etiquetas en el eje x
            g.setColor( Color.blue );
            g.drawString((""+i), posHorizontal+(posHorizontal>10?10:7), this.getHeight());
            posHorizontal += divisionesHorizontales;
            //dibujando puntos
        }
    }
    protected abstract void dibujarPuntos(Graphics g);
    
    protected int cantidadDeDatos(){
        return Datos.getContenido().size();
    }
    
    protected abstract double maximo();
}
